# -*- coding: utf-8 -*-
"""
Created on Tue Aug  8 20:40:03 2023

@author: skunk69
"""

import json

chinese_name = u'大学生恋爱心理压力源量表'
english_name = "Psychological Stressor Scale of College Students' Love"
abbreviation = 'PSSCSL'
category = u'应激及相关行为量表'

outline = u"""伴随高等教育大众化进程的发展，考试、就业和激励竞争给当代大学生的恋爱带来了显著的心理压力，通过相关的前期调查研究发现：大学生在恋爱心理健康水平上参差不齐，大学生恋爱的心理压力与学业考核、就业压力、家庭期望等因素存在一定的线性相关。
基于大学生恋爱心理发展和教育社会学的基本理论，张炜将家庭观念、经济背景、人格特质、价值观念、交互过程、就业期望、机会成本等因素编制于大学生恋爱心理压力源的预判中，期望通过对这些因素成为压力源进行实证验证，并借此判断和分析当代大学生恋爱心理健康水平。"""

instruction = u"""这是一份关于大学生恋爱心理的量表。请根据您自身于各个项目所描述情况符合的程度在每题后的选项（经常，大多，有时，几乎没，无）中选择一项。答案无所谓好坏对错，请根据您的真实情况填写。"""

with open('PSSCSL.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for key,line in enumerate(lines):
    _,value = line.strip().split('.',maxsplit=1)
    items[key+1] = value.strip()

reverse_items = []
scales = [u'能力相关',u'家庭影响',u'人格特质',u'相互感受',u'价值倾向',u'学业负担']
L1 = list(range(1,8))
L2 = list(range(8,13))
L3 = list(range(13,18))
L4 = list(range(18,22))
L5 = list(range(22,25))
L6 = list(range(25,28))
scales_items = [L1,L2,L3,L4,L5,L6]
factors = []
factors_scales = []
rating = [u'经常',u'大多',u'有时',u'几乎没',u'无']
score_rules = list(range(5,0,-1))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《大学生恋爱心理压力源量表》属于一个自评量表。"""

reliability = u"""样本来自于武汉地区4所高校大学生群体。相关检测显示，总量表的α系数为0.84，分半信度为0.774；各分量表的α系数和分半信度均大于0.8和0.6。"""
validity = u"""因素分析表明，量表的主因子结构为27项6因子。对照SCL-90的关联效度为0.508（P<0.05）。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""先将各题目得分乘以相对应的权系数，所有27个题目加权后的分数相加得到总分。各题目的权重为：题目1~7，200%；题目8~17，100%；题目18~27，50%。
0~45分为低压区，45~75为常态值区，75~100为显压区，105~145为高压区。"""

applications = u"""该量表应用还没有大范围展开，还需要进一步实践检测与改进。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)